]> dgit.raspbian.org Git - gnome-shell.git/log
gnome-shell.git
9 months agomodalDialog: Drop seat state check after grabs
Carlos Garnacho [Tue, 30 Dec 2025 13:36:18 +0000 (14:36 +0100)]
modalDialog: Drop seat state check after grabs

Grabs are non-failable now, we do not need to check for
the backend seat actually having been able to perform the
request.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4020>

9 months agolookingGlass: Drop seat state check after grabs
Carlos Garnacho [Tue, 30 Dec 2025 13:35:50 +0000 (14:35 +0100)]
lookingGlass: Drop seat state check after grabs

Grabs are non-failable now, we do not need to check for
the backend seat actually having been able to perform the
request.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4020>

9 months agograbHelper: Drop seat state check after grab
Carlos Garnacho [Tue, 30 Dec 2025 13:35:21 +0000 (14:35 +0100)]
grabHelper: Drop seat state check after grab

Grabs are non-failable now, we do not need to check for
the backend seat actually having been able to perform the
request.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4020>

9 months agodnd: Drop seat state check
Carlos Garnacho [Tue, 30 Dec 2025 13:34:00 +0000 (14:34 +0100)]
dnd: Drop seat state check

Grabs are non-failable now, we do not need to check for
the backend seat actually having been able to perform the
request.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4020>

9 months agokeyboardManager: Remove unnecessary calls
Carlos Garnacho [Tue, 30 Dec 2025 11:36:57 +0000 (12:36 +0100)]
keyboardManager: Remove unnecessary calls

There is no longer need to freeze/unfreeze/ungrab the keyboard.
This API was only effective in the X11 backend.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4020>

9 months agoworkspaceAnimation: Perform a grab during workspace switch gestures
Carlos Garnacho [Tue, 30 Dec 2025 12:24:41 +0000 (13:24 +0100)]
workspaceAnimation: Perform a grab during workspace switch gestures

Currently, the mechanism to reclaim touch input from clients and into
the gesture is somewhat indirect:
- The swipeTracker gesture(s) will enter in a recognized state
- The MetaGestureTracker will notice the recognized state on a gesture
  set up in the ClutterStage actor, and emit META_SEQUENCE_ACCEPTED
  on the sequence
- The core will notice the sequence being accepted and call
  meta_display_cancel_touch()/meta_wayland_touch_cancel()
- This eventually results in wl_touch.cancel on the affected client(s)

This is a bit too convoluted and special cased, so claim input using
a more traditional way: Using a Clutter grab. This will also result in
touch being cancelled on the Wayland side. This will happen along with
other input, but that's actually a consistence improvemente, since the
other method would not prevent other input (e.g. pointer) while the
workspace gesture is ongoing. This results in glitchy behavior if
multiple input devices are used simultaneously.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4020>

9 months agoUpdate Norwegian Bokmål translation
Kjartan Maraas [Mon, 19 Jan 2026 14:49:02 +0000 (14:49 +0000)]
Update Norwegian Bokmål translation

9 months agoUpdate Turkish translation
Sabri Ünal [Mon, 19 Jan 2026 12:05:59 +0000 (12:05 +0000)]
Update Turkish translation

9 months agoscreenshot: Port to cursors set through ClutterActor
Carlos Garnacho [Wed, 5 Nov 2025 14:00:25 +0000 (15:00 +0100)]
screenshot: Port to cursors set through ClutterActor

Use the UIAreaIndicator, SelectArea and PickPixel actors for
this interaction, instead of a globally set cursor.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3952>

9 months agopointerA11yTimeout: Set the cursor through ClutterActor API
Carlos Garnacho [Wed, 5 Nov 2025 11:41:02 +0000 (12:41 +0100)]
pointerA11yTimeout: Set the cursor through ClutterActor API

Set the cursor on the stage. This differs with the "root" cursor
approach in that actors with a non-inherited cursor (e.g. I-beam on
text actors) will stick to that instead of showing the cursor as
set here.

If that's turns out not to be enough, might make sense to move this
piece of a11y feedback to Mutter.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3952>

9 months agomessageList: Use Clutter cursors
Carlos Garnacho [Wed, 5 Nov 2025 11:40:18 +0000 (12:40 +0100)]
messageList: Use Clutter cursors

Set the hand cursor on URLs through ClutterActor API, instead of
globally.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3952>

9 months agodnd: Adapt to Clutter cursors
Carlos Garnacho [Wed, 5 Nov 2025 11:39:16 +0000 (12:39 +0100)]
dnd: Adapt to Clutter cursors

Set the expected drag and drop cursor through the grab actor instead
of globally.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3952>

9 months agost: Set I-beam cursor on StEntry through Clutter API
Carlos Garnacho [Wed, 5 Nov 2025 12:26:40 +0000 (13:26 +0100)]
st: Set I-beam cursor on StEntry through Clutter API

This also means we can drop the special shell hooks to actually
set a cursor with MetaDisplay API.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3952>

9 months agoUpdate Romanian translation
Antonio Marin [Sat, 17 Jan 2026 21:26:55 +0000 (21:26 +0000)]
Update Romanian translation

9 months agoUpdate Kabyle translation
BoF ButterflyOfFire [Sat, 17 Jan 2026 12:25:11 +0000 (12:25 +0000)]
Update Kabyle translation

9 months agoUpdate Slovenian translation
Martin [Thu, 15 Jan 2026 22:00:02 +0000 (22:00 +0000)]
Update Slovenian translation

9 months agoauthPrompt: Focus entry after extending session
Ignacy Kuchciński [Fri, 9 Jan 2026 14:14:23 +0000 (15:14 +0100)]
authPrompt: Focus entry after extending session

Re-focus password entry after ignoring screen time limits for the rest
of the day.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3999>

9 months agoauthPrompt: Implement screen time ignore button
Ignacy Kuchciński [Fri, 12 Dec 2025 01:32:45 +0000 (02:32 +0100)]
authPrompt: Implement screen time ignore button

Implement screen time ignore button which allows the parent to extend
the child’s computer time for the rest of the day.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/work_items/8578
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3999>

9 months agopolkitAgent: Allow malcontent action when locked
Ignacy Kuchciński [Sat, 3 Jan 2026 15:17:45 +0000 (16:17 +0100)]
polkitAgent: Allow malcontent action when locked

Allow org.freedesktop.Malcontent.SessionLimits.Extend action id when
screen is locked, so it's possible to show polkit authentication dialogs
on lock screen for parental controls session limits integration in the
future.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3999>

9 months agodbus-interfaces: Update MalcontentTimer child interface
Ignacy Kuchciński [Fri, 12 Dec 2025 01:29:35 +0000 (02:29 +0100)]
dbus-interfaces: Update MalcontentTimer child interface

Update org.freedesktop.MalcontentTimer1.Child interface to include the
new screen time extensions functionality.

The interface has been updated from https://gitlab.freedesktop.org/pwithnall/malcontent/-/blob/main/libmalcontent-timer/org.freedesktop.MalcontentTimer1.Child.xml,
and it has not been modified after being copied.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3999>

9 months agounlockDialog: Block auth when limit reached
Ignacy Kuchciński [Tue, 25 Nov 2025 04:48:20 +0000 (05:48 +0100)]
unlockDialog: Block auth when limit reached

Block ability to authenticate when screen time limit is reached, so
that the child cannot unlock.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/work_items/8577
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3980>

9 months agoauthPrompt: Add ability to block authentication
Ignacy Kuchciński [Tue, 2 Dec 2025 23:51:44 +0000 (00:51 +0100)]
authPrompt: Add ability to block authentication

Make it possible to prevent the user from using the authentication
prompt, by showing the parental controls shield instead of the password
entry.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3980>

9 months agoauthPrompt: Group prompt elements
Ignacy Kuchciński [Wed, 3 Dec 2025 14:43:18 +0000 (15:43 +0100)]
authPrompt: Group prompt elements

Group various prompt related elements together, so it's easier in the
future to hide them when parental controls session limits are enforced.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3980>

9 months agoBump version to 50.alpha
Florian Müllner [Tue, 13 Jan 2026 20:31:20 +0000 (21:31 +0100)]
Bump version to 50.alpha

Update NEWS.

9 months agobuild: Depend on gsettings-desktop-schemas 50.alpha
Florian Müllner [Wed, 14 Jan 2026 09:48:11 +0000 (10:48 +0100)]
build: Depend on gsettings-desktop-schemas 50.alpha

Needed for the week-start-day setting.

9 months agocalendar: Set weekStart from the week-start-day setting
Evan Paterakis [Tue, 13 Jan 2026 06:13:49 +0000 (08:13 +0200)]
calendar: Set weekStart from the week-start-day setting

Honor the new `org.gnome.desktop.calendar.week-start-day` schema key that
determines the starting week day of the calendar

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5040
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4026>

9 months agoBump mutter image
Florian Müllner [Wed, 14 Jan 2026 09:17:20 +0000 (10:17 +0100)]
Bump mutter image

Pull in a newer gsettings-desktop-schemas, so that we can support
the new week-start-day setting.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4037>

9 months agopo: Update POTFILES.skip
Florian Müllner [Mon, 12 Jan 2026 13:49:37 +0000 (14:49 +0100)]
po: Update POTFILES.skip

Commit 0eb754a084 simplified the systemd units, update POTFILES
to reflect that change.

Fixes: 0eb754a084 ("data: Overhaul systemd units")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4031>

9 months agoci: Bump mutter image
Florian Müllner [Mon, 12 Jan 2026 19:19:04 +0000 (20:19 +0100)]
ci: Bump mutter image

Pull in a newer GTK version with session save/restore support, so
the Extension app can more easily start to use that API.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4032>

9 months agomessageList: Fix double async in method name
Julian Sparber [Thu, 25 Dec 2025 22:07:43 +0000 (23:07 +0100)]
messageList: Fix double async in method name

This was probably introduced by mistake in
https://gitlab.gnome.org/GNOME/gnome-shell/-/commit/04cab9ee9e03720c1da819f2a25b0af954f99460

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4018>

9 months agoshellDBus: Add new BrightnessChanged signal to brightness interface
Carlos Garnacho [Mon, 24 Nov 2025 16:16:57 +0000 (17:16 +0100)]
shellDBus: Add new BrightnessChanged signal to brightness interface

This does actually track user-triggered changes, so other pieces
(i.e. gsd-power) can react to this. This will help in reintroducing
brightness re-normalization when brightness is driven by ALS sensors.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3979>

9 months agobrightnessManager: Emit signal on user changes
Carlos Garnacho [Mon, 24 Nov 2025 16:15:53 +0000 (17:15 +0100)]
brightnessManager: Emit signal on user changes

This will be useful to let other pieces know of user-triggered
brightness changes.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3979>

9 months agolayout: Drop fallback for hot corner without barriers
Carlos Garnacho [Tue, 23 Dec 2025 14:09:09 +0000 (15:09 +0100)]
layout: Drop fallback for hot corner without barriers

The BARRIER backend capability was been moot for a long time since
XInput 2.4 became widespread and barriers became commonplace. And
even further recently with the removal of the X11 backend. The
native backend has always implemented barriers.

It seems we can drop this fallback handling. Since the _entered flag
was only used in those paths, the leave event vfunc is unnecessary too.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4016>

9 months agoUpdate Basque translation
Ibai Oihanguren Sala [Mon, 12 Jan 2026 09:03:50 +0000 (09:03 +0000)]
Update Basque translation

9 months agoUpdate Russian translation
Artur S0 [Sun, 11 Jan 2026 22:31:40 +0000 (22:31 +0000)]
Update Russian translation

9 months agoUpdate Romanian translation
Antonio Marin [Fri, 9 Jan 2026 09:27:06 +0000 (09:27 +0000)]
Update Romanian translation

9 months agoUpdate Norwegian Bokmål translation
Kjartan Maraas [Thu, 8 Jan 2026 23:13:11 +0000 (23:13 +0000)]
Update Norwegian Bokmål translation

(cherry picked from commit f45fd092fbafe4537a3fde4ef7959d026946bc8a)

9 months agoUpdate Norwegian Bokmål translation
Kjartan Maraas [Thu, 8 Jan 2026 23:09:01 +0000 (23:09 +0000)]
Update Norwegian Bokmål translation

(cherry picked from commit 9957a754ee77896f30e1effae891a5289a27788e)

9 months agoUpdate Kazakh translation
Baurzhan Muftakhidinov [Thu, 8 Jan 2026 16:11:17 +0000 (16:11 +0000)]
Update Kazakh translation

(cherry picked from commit 86dabcd65d10c9df0107ed384f0e0b7da391d42c)

10 months agoUpdate Romanian translation
Antonio Marin [Tue, 6 Jan 2026 22:12:56 +0000 (22:12 +0000)]
Update Romanian translation

10 months agoUpdate Romanian translation
Antonio Marin [Tue, 6 Jan 2026 13:48:30 +0000 (13:48 +0000)]
Update Romanian translation

10 months agojs: Don't reset selected tab index in open() of looking glass
sudigit [Sat, 3 Jan 2026 15:24:24 +0000 (20:54 +0530)]
js: Don't reset selected tab index in open() of looking glass

The looking glass will reopen with the previously opened tab.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8294
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4027>

10 months agoUpdate Romanian translation
Antonio Marin [Sat, 3 Jan 2026 17:37:44 +0000 (17:37 +0000)]
Update Romanian translation

10 months agoUpdate Japanese translation
Makoto Sakaguchi [Tue, 30 Dec 2025 05:55:47 +0000 (05:55 +0000)]
Update Japanese translation

10 months agoUpdate Occitan translation
Quentin PAGÈS [Fri, 26 Dec 2025 09:18:25 +0000 (09:18 +0000)]
Update Occitan translation

10 months agoUpdate Interlingua translation
Emilio Sepúlveda [Thu, 25 Dec 2025 00:27:31 +0000 (00:27 +0000)]
Update Interlingua translation

10 months agoUpdate Uzbek (Latin) translation
Baxrom Raxmatov [Wed, 24 Dec 2025 14:42:53 +0000 (14:42 +0000)]
Update Uzbek (Latin) translation

(cherry picked from commit d780f7a32bc573b867ce9b19199a482767674ba1)

10 months agoUpdate Slovenian translation
Martin [Sun, 21 Dec 2025 08:03:08 +0000 (08:03 +0000)]
Update Slovenian translation

10 months agoUpdate Portuguese translation
Hugo Carvalho [Sat, 20 Dec 2025 11:00:54 +0000 (11:00 +0000)]
Update Portuguese translation

(cherry picked from commit d0c62825ccdc1ad6b4d9c5d829f3eaf08009085a)

10 months agokeyboard: Call ibusManager.setEngine() with actual layout
Takao Fujiwara [Wed, 29 Oct 2025 12:34:22 +0000 (21:34 +0900)]
keyboard: Call ibusManager.setEngine() with actual layout

Currently ibusManager.setEngine() is always called with 'xkb:us::eng'
US layout name but the actual language layout is more useful for IBus.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8490
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3784>

10 months agoanimationUtils: Use easeAsync() for wiggle
Florian Müllner [Thu, 27 Nov 2025 10:28:23 +0000 (11:28 +0100)]
animationUtils: Use easeAsync() for wiggle

The wiggle animation consists of 3 chained animations. This is
expressed a lot nicer with a series of async calls than nested
callbacks.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4007>

10 months agojs: Stop wrapping ease() in promise
Florian Müllner [Tue, 2 Dec 2025 14:32:16 +0000 (15:32 +0100)]
js: Stop wrapping ease() in promise

We can now use the async variants instead.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4007>

10 months agoenvironment: Add async ease variants
Florian Müllner [Thu, 19 Dec 2019 22:07:55 +0000 (23:07 +0100)]
environment: Add async ease variants

Ease functions can be used nested, and often need to complete before
performing an action.

This is currently handled by providing onComplete/onStopped callbacks,
which can get tedious when nesting.

To make these cases more convenient, add async variants that return
a promise that is resolved when the transition completes, so that
callers can await the result instead.

In case the transition was interrupted, the promise is rejected with a
CANCELLED error, so that it stops a promises chain and can easily be
filtered out in catch handlers.

Base on an original patch by Marco Trevisan.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3948>

10 months agocalendar: Center align "No Notifications" text
revisto [Wed, 17 Dec 2025 21:13:47 +0000 (00:43 +0330)]
calendar: Center align "No Notifications" text

The "No Notifications" placeholder was left-aligned instead of
centered, which looked unbalanced in the empty notification state.
Fix by centering the label.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8913
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4005>

10 months agotimeLimitsManager: Implement malcontent notification
Ignacy Kuchciński [Sat, 22 Nov 2025 02:43:17 +0000 (03:43 +0100)]
timeLimitsManager: Implement malcontent notification

Implement 'time is almost up' notification for the parental controls
session limits functionality.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/work_items/8576
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3977>

10 months agotimeLimitsManager: Differentiate malcontentSessionLimits
Ignacy Kuchciński [Sat, 22 Nov 2025 00:57:26 +0000 (01:57 +0100)]
timeLimitsManager: Differentiate malcontentSessionLimits

Make the parental controls session limits related variables and
functions have more specific names, more representative of their
contents and function.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3977>

10 months agotimeLimitsManager: Differentiate wellbeing daily limit
Ignacy Kuchciński [Sat, 22 Nov 2025 03:14:10 +0000 (04:14 +0100)]
timeLimitsManager: Differentiate wellbeing daily limit

Rename the daily limit variables and functions in various places, so
that its name makes it clear what it represents.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3977>

10 months agotimeLimitsManager: Factor out wellbeing-daily-limit-enabled
Ignacy Kuchciński [Sat, 22 Nov 2025 00:45:32 +0000 (01:45 +0100)]
timeLimitsManager: Factor out wellbeing-daily-limit-enabled

Factor out wellbeing-daily-limit-enabled specific for the wellbeing
screen time limits functionality to a separate function, which will make
it easier in the future to make the daily-limit-enabled property also
handle parental controls session limits functionality.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3977>

10 months agodata: Overhaul systemd units
Adrian Vovk [Thu, 13 Nov 2025 19:01:20 +0000 (14:01 -0500)]
data: Overhaul systemd units

This simplifies the structure of the systemd units, since we no longer
support running with X11. But it also allows us to pass in the
gnome-shell session mode via systemd.

This removes the need for GDM to have any special code to handle the
GNOME_SHELL_SESSION_MODE environment variable, and allows GNOME sessions
to specify directly what session mode they need without the involvement
of GDM. This makes it trivial to define custom gnome-session sessions
that use custom gnome-shell session modes.

Sessions that consist entirely of a gnome-shell mode (like the
gnome-classic session) will need to do a little more legwork to define
themselves as proper gnome-session sessions.

10 months agostatus/volume: Use default color for muted microphone indicator
revisto [Tue, 16 Dec 2025 15:58:59 +0000 (19:28 +0330)]
status/volume: Use default color for muted microphone indicator

The muted indicator status is currently hard to distinguish from the
unmuted one. As there is no privacy concern when muted, don't apply
the privacy-indicator styling in that state so the states become
more distinct.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8077
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4001>

10 months agooverviewControls: Use ease-out-sine when entering overview and app grid
Hari Rana [Sat, 13 Dec 2025 03:36:57 +0000 (22:36 -0500)]
overviewControls: Use ease-out-sine when entering overview and app grid

Using animations with slower initial curves on display-wide
layout shifts may provide a smoother experience to users of
low(er) refresh rate and/or large(r) displays, as they avoid
skipping large chunks of frames, making it less choppy at
the beginning of the animation.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/4000>

10 months agocss: Define a higher contrast insensitive text style for card elements
Sam Hewitt [Wed, 10 Dec 2025 14:46:37 +0000 (11:16 -0330)]
css: Define a higher contrast insensitive text style for card elements

- fixes an oversight in color definitions for insensitive style text on cards where contrast was insufficient

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8683
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3998>

10 months agoscreenShield: Fix user deselection after idle in greeter
Lukas Schmelting [Fri, 5 Dec 2025 08:15:33 +0000 (09:15 +0100)]
screenShield: Fix user deselection after idle in greeter

When the session goes idle, _maybeCancelDialog() cancels any ongoing
authentication dialog. Commit b16ee1a added code to grab focus after
cancellation, ensuring it stayed on the lock screen curtain rather than
wherever cancel() placed it. This was needed to handle keyboard events
like Enter to raise the unlock dialog.

Commit 727c84251 changed this to grab focus on the dialog itself, since
the lock screen architecture had evolved. However, in the greeter case
there is no separate curtain - the LoginDialog is shown directly and
cancel() already restores focus to the user list via _showUserList().
The additional focus grab on the dialog container moved focus away from
the selected user as soon as the screen began to dim, causing the
username to appear deselected when returning from idle.

Similarly, _ensureUnlockDialog() and _resetLockScreen() grabbed focus on
the dialog container when the screen fully blanked, causing the same
issue.

For the greeter, replace grab_key_focus() with activate(), which
delegates to LoginDialog.activate() and properly focuses the user list.
For the unlock dialog, keep the original grab_key_focus() behavior -
calling UnlockDialog.activate() would invoke _showPrompt(), which would
interfere with commit 4bfa30085 that returns to the clock view after
suspend.

See-also: b16ee1a3a6c02facc803be45d2859e53c906decd
See-also: 727c84251d6e536c5658962b4fd4ec89acdc832f
See-also: 4bfa300850045dcd7c974bdd128adef13f2777b1
Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/1132
Closes: https://gitlab.gnome.org/GNOME/gdm/-/issues/599
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3993>

10 months agoscreenshot: Improve accessibility of the icon label buttons
Lukáš Tyrychtr [Fri, 26 Sep 2025 15:35:20 +0000 (17:35 +0200)]
screenshot: Improve accessibility of the icon label buttons

Set the label actor properly so the buttons have a label.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3893>

10 months agostatus/powerProfiles: Indicate non-default power mode in top bar
Florian Müllner [Thu, 13 Nov 2025 19:01:04 +0000 (20:01 +0100)]
status/powerProfiles: Indicate non-default power mode in top bar

It is quite easy to switch the power profile for some specific
purpose, and then forgetting to change it back and experiencing
unexpected performance behavior later.

To help with that, indicate the active power profile in the top
bar if it diverges from the default 'balanced' one.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/7440
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3961>

10 months agopanel: Move power profiles indicator next to the system one
Florian Müllner [Thu, 13 Nov 2025 19:13:37 +0000 (20:13 +0100)]
panel: Move power profiles indicator next to the system one

For devices with a battery, the system indicator shows the current
charge level. As power profiles are related to power, it makes sense
to keep the two indicators next to each other.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3961>

10 months agoswipeTracker: Handle touchpad gestures on actor
Florian Müllner [Tue, 9 Dec 2025 13:33:38 +0000 (14:33 +0100)]
swipeTracker: Handle touchpad gestures on actor

Touchscreen gestures and scrolling are already handled by events
on the associated actor rather than the stage. There's no good
reason to not do the same for touchpad gestures as well.

Closes: https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/8850
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3997>

11 months agoenvironment: Ignore prepare/cleanup in no duration animations
Marco Trevisan (Treviño) [Tue, 2 Dec 2025 03:12:30 +0000 (04:12 +0100)]
environment: Ignore prepare/cleanup in no duration animations

These animations are just completing immediately, so there is no need to
increase the complexity by calling unneeded code

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3992>

11 months agoenvironment: Split out the prepare and cleanup animation code
Marco Trevisan (Treviño) [Fri, 5 Dec 2025 22:39:23 +0000 (23:39 +0100)]
environment: Split out the prepare and cleanup animation code

We do the same twice, and it's not trivial code anymore, so let's
separate this into another function which returns the prepare and cleanup
functions

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3992>

11 months agoworkspaceAnimation: Use separate WorkspaceBackground class
Florian Müllner [Fri, 5 Dec 2025 09:06:32 +0000 (10:06 +0100)]
workspaceAnimation: Use separate WorkspaceBackground class

Separating WorkspaceGroup and WorkspaceBackground allows each to
track its own set of windows without special-casing exceptions.

This will also give us more flexibility in the future, if we need
to reuse the background elsewhere. This may happen if we optionally
change the animation to a crossfade for the new `reduced-motion`
setting.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3995>

11 months agoworkspaceAnimation: Split out BaseWorkspaceGroup
Florian Müllner [Fri, 5 Dec 2025 08:25:30 +0000 (09:25 +0100)]
workspaceAnimation: Split out BaseWorkspaceGroup

Since we started to show DESKTOP windows as part of the background
during the workspace animation, we need to track both the windows
relevant for the monitor/workspace and DESKTOP windows.

We are about to split out the background handling into its own class.

To prepare for this, split out a BaseWorkspaceGroup class that handles the
basic "create clones of relevant windows and track them" functionality
common to both cases.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3995>

11 months agoenvironment: Ignore animation events after shutdown
Marco Trevisan (Treviño) [Fri, 5 Dec 2025 22:14:29 +0000 (23:14 +0100)]
environment: Ignore animation events after shutdown

As soon as the shutdown starts, any animation event does not make sense,
although during this phase the clutter timelines may still proceed and
potentially calling invalid code in their callbacks.

Prevent this from happening by disconnecting from any timeline signal
we are connected to as soon as the `shutdown` signal is emitted

Co-Authored-By: Florian Müllner <fmuellner@gnome.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3996>

11 months agoscreenshot: End screencast with same keybinding as start screencast
Ian Off [Thu, 21 Aug 2025 04:27:43 +0000 (23:27 -0500)]
screenshot: End screencast with same keybinding as start screencast

Currently, the screencast keyboard shortcut shows the UI to begin a
screencast, but there is no way to end it with a keyboard shortcut.

This behavior is inconvenient and seems to be a regression, as a wide
variety of online resources recommend using the same shortcut to start
and end screencasts.

This commit introduces a simple check when the showScreenRecordingUI
function is called by the show-screen-recording-ui keybinding.
If the showScreenRecordingUI function is called while a screencast
is in progress, the stopScreencast function is called instead
of opening the screenshot UI in screencast mode.

Closes https://gitlab.gnome.org/GNOME/gnome-shell/-/issues/5386

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3847>

11 months agoenvironment: Do not try to animate a St.Adjustment with unmapped actor
Marco Trevisan (Treviño) [Thu, 4 Dec 2025 04:18:04 +0000 (05:18 +0100)]
environment: Do not try to animate a St.Adjustment with unmapped actor

We were already doing this for actual actors, but the case was
skipped in the St.Adjustment case.

However, as it is an animatable we can just use its related actor as
reference, and keep the same logic despite their actual object type

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3991>

11 months agoenvironment: Generalize easeActorProperty to animatable case
Marco Trevisan (Treviño) [Thu, 4 Dec 2025 04:14:23 +0000 (05:14 +0100)]
environment: Generalize easeActorProperty to animatable case

We're not handling actors only with it but also St.Adjustment that is a
Clutter.Animatable, so let's name it for what it is, and adjust the
parameter so that its type is not given for granted

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3991>

11 months agooverviewControls: Wait for all animation promises on startup
Marco Trevisan (Treviño) [Fri, 31 Oct 2025 04:18:19 +0000 (05:18 +0100)]
overviewControls: Wait for all animation promises on startup

Currently on startup we're just waiting for a single animation (the dash
one) being completed, while this is acceptable since the animation
duration is not shorter or longer than others, it's still not clean, as
technically we should just wait for all the pending animations of the
set before calling the startup animation completed.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3944>

11 months agoci: Bump mutter image
Florian Müllner [Fri, 5 Dec 2025 12:38:25 +0000 (13:38 +0100)]
ci: Bump mutter image

Mutter bumped its libinput requirement, so pull in the new version.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3994>

11 months agoUpdate Russian translation
Artur S0 [Tue, 2 Dec 2025 16:15:26 +0000 (16:15 +0000)]
Update Russian translation

11 months agolayout: Clarify startup animation code
Florian Müllner [Thu, 27 Nov 2025 22:41:35 +0000 (23:41 +0100)]
layout: Clarify startup animation code

Once the LayoutManager is initialized, we do the startup animation
that consists of 4 steps:

 1. load the system background
 2. prepare the animation
 3. run the animation
 4. complete initialization post-animation

This isn't immediately obvious right now, as the individual steps
are chained in various ways.

It also doesn't help that it's `_loadBackground()` that starts the
chain, as that hardly implies "startup animation".

Clarify that code by adding an async `_doStartupAnimation()` method
that handles all steps in order.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3988>

11 months agolayout: Resolve immediately after loading the background
Florian Müllner [Fri, 28 Nov 2025 00:43:33 +0000 (01:43 +0100)]
layout: Resolve immediately after loading the background

We currently resolve the promise in a low-priority idle handler
after the background was loaded, so that the system can settle
down after the initial load before doing the animation.

Promises are already resolved on the main loop (albeit with
a high priority), so hopefully the explicit idle source isn't
necessary anymore.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3988>

11 months agolayout: Use promise to wait for background to load
Florian Müllner [Fri, 28 Nov 2025 00:13:29 +0000 (01:13 +0100)]
layout: Use promise to wait for background to load

This allows us to separate the end of the loading operation
from the steps that follow it. We will soon use that to
express the startup animation as a series of (async) steps
instead of a chain of function calls.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3988>

11 months agolayout: Use promise to ensure primary monitor
Florian Müllner [Thu, 27 Nov 2025 21:47:46 +0000 (22:47 +0100)]
layout: Use promise to ensure primary monitor

Both loading the system background and setting up the startup animation
depends on having a primary monitor, so we wait for the monitor to
appear if necessary.

Currently this is done differently in each case, once by having a hook
to recall a method when the monitor appears, and once by re-running an
idle handler.

Replace this with an async `_ensurePrimaryMonitor()` method that we can
use to await the primary monitor where needed.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3988>

11 months agoUpdate Romanian translation
Antonio Marin [Mon, 1 Dec 2025 17:12:41 +0000 (17:12 +0000)]
Update Romanian translation

11 months agocapsLockWarning: Mark as not visible to a11y tree when hidden
Lukáš Tyrychtr [Tue, 25 Nov 2025 14:26:09 +0000 (15:26 +0100)]
capsLockWarning: Mark as not visible to a11y tree when hidden

We're animating it away, but not for the a11y tree.

This fixes it, so the caps lock warning is not read regardless of the state
of the key.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3981>

11 months agoUpdate Slovenian translation
Martin [Sat, 29 Nov 2025 16:53:31 +0000 (16:53 +0000)]
Update Slovenian translation

11 months agoci: Clean up the dependencies
Debarshi Ray [Fri, 28 Nov 2025 21:24:17 +0000 (22:24 +0100)]
ci: Clean up the dependencies

The pkgconfig(gobject-introspection-1.0) dependency was added in commit
0a420404c603 ("ci: Update JS tooling") as a build-time dependency of gjs
at the time time, even though it wasn't being built from source, and the
pre-built gjs included in the image was being used.

What's needed is a C compiler to build gnome-extensions-tool, and GCC
was being pulled in by pkgconfig(gobject-introspection-1.0) through
libtool.

Related: https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/2193
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3989>

11 months agoscreenShield: Avoid unfocused authentication view after resume
Lukas Schmelting [Thu, 27 Nov 2025 22:58:32 +0000 (23:58 +0100)]
screenShield: Avoid unfocused authentication view after resume

When suspending on the authentication page of the lock screen in a user
session, the session resumes with the authentication dialog shown but
its password entry field unfocused. Instead, focus moves to the
authentication dialog itself while _ensureUnlockDialog() in
screenShield.js is called on resume.

Avoid this edge case by switching to the clock view instead before
suspend, which also provides a more consistent user experience.

Co-authored-by: Florian Müllner <fmuellner@gnome.org>
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3962>

11 months agojs: Export all animation durations and related values
Marco Trevisan (Treviño) [Thu, 27 Nov 2025 10:43:28 +0000 (11:43 +0100)]
js: Export all animation durations and related values

Extensions may want to use these values as references for performing
similar animations or to replicate them, so just export them as constant
values.

So, it won't be possible to change them but they won't be fully private
either

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3985>

11 months agomessageTray: Disconnect to global signals on destruction
Marco Trevisan (Treviño) [Thu, 27 Nov 2025 23:28:12 +0000 (00:28 +0100)]
messageTray: Disconnect to global signals on destruction

The global display object has always a longer lifetime than anything
that is initialized from JS, so avoid signals that it may emit to be
handled at later point.

It handles issues such as:
  (gnome-shell:2429): Gjs-CRITICAL **: 23:18:35.025: Object
  Gjs_ui_messageTray_MessageTray (0x3440ed60), has been already disposed —
  impossible to set any property on it.
  This might be caused by the object having been destroyed from C code using
  something such as destroy(), dispose(), or remove() vfuncs.
  == Stack trace for context 0x31073eb0 ==
  #0       348db378 i   resource:///org/gnome/shell/ui/messageTray.js:1046 (3a8ac3a71f60 @ 104)
  #1       348db2d8 i   resource:///org/gnome/shell/ui/main.js:277 (3a8ac3a0b100 @ 119)

Seen in: https://gitlab.gnome.org/GNOME/gnome-shell/-/jobs/5846454

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3987>

11 months agotest-tool: Add --extension option
Florian Müllner [Thu, 27 Nov 2025 17:56:17 +0000 (18:56 +0100)]
test-tool: Add --extension option

The tool is currently used for running gnome-shell's own tests, but
it could also be used by extensions to automate their testing.

To support that use case, add an --extension option that installs
the provided extension zip and enables the extension before starting
gnome-shell.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agoextension-tool/install: Add --print-uuid option
Florian Müllner [Thu, 27 Nov 2025 17:30:26 +0000 (18:30 +0100)]
extension-tool/install: Add --print-uuid option

This is meant to help with automation, where some follow-up actions
are needed after installing an arbitrary extension, like

```sh
$ uuid=$(gnome-extensions install --print-uuid extension.zip)
$ gsettings set org.gnome.shell enabled-extensions [\'$uuid\']
```

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agotest-tool: Add option to run without animations
Florian Müllner [Thu, 27 Nov 2025 15:45:35 +0000 (16:45 +0100)]
test-tool: Add option to run without animations

We currently force animations, so the test reflect the typical
usage even in environments without hardware acceleration.

However testing with animations disabled can be useful as well,
so allow that with a CLI option.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agotest-tool: Set up GSettings keyfile
Florian Müllner [Thu, 27 Nov 2025 15:29:44 +0000 (16:29 +0100)]
test-tool: Set up GSettings keyfile

Even with a separate XDG_CONFIG_HOME, settings may still be picked
up from the session's dconf instance (although the tool is typically
run through dbus-run-session).

To really ensure that we control the settings, we can force a different
backend. The 'memory' backend would be enough to ensure default values,
however using the 'keyfile' backend means we can also inject non-default
values.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agotest-tool: Set up a temporary xdg-home directory
Florian Müllner [Thu, 27 Nov 2025 13:43:43 +0000 (14:43 +0100)]
test-tool: Set up a temporary xdg-home directory

Currently the launched gnome-shell instance uses the regular xdg-home
directories, which means it picks up settings, extensions etc. from
the current user.

Avoid this by pointing the xdg-home dirs to a temporary directory, so
everything that respects the basedir spec runs with a clean slate.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agotest-tool: Remove --wayland/-x11 options
Florian Müllner [Thu, 27 Nov 2025 13:25:15 +0000 (14:25 +0100)]
test-tool: Remove --wayland/-x11 options

Running as a wayland compositor is the only available option nowadays.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agotest-tool: Replace --nested with --devkit
Florian Müllner [Thu, 27 Nov 2025 13:19:13 +0000 (14:19 +0100)]
test-tool: Replace --nested with --devkit

With the removal of the X11 backend, the --nested option isn't just
unavailable by default, but gone for good.

Switch to devkit to allow running tests in a window inside the session.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agotest-tool: Remove option to upload perf reports
Florian Müllner [Thu, 27 Nov 2025 14:06:12 +0000 (15:06 +0100)]
test-tool: Remove option to upload perf reports

If memory serves well, uploads happened to a server in Owen's living
room. It is doubtful that the server-side still exists anywhere, or
that anyone has uploaded any reports in the last 15 years, so stop
carrying that code around.

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agotest-tool: Remove unused imports
Florian Müllner [Thu, 27 Nov 2025 14:18:38 +0000 (15:18 +0100)]
test-tool: Remove unused imports

Fixes: ee7e62c9c8 ("perf-tool: Spawn perf-tool-helper from gnome-shell")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agotest-tool: Adjust name in --version
Florian Müllner [Thu, 27 Nov 2025 14:41:44 +0000 (15:41 +0100)]
test-tool: Adjust name in --version

The tool was renamed from "perf-tool" a while ago, to reflect
that its purpose has shifted from collecting performance data
to running gnome-shell with scripted tests.

Fixes: 9bb003463c ("test-tool: Rename perf-tool")
Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3986>

11 months agooverviewControls: Only import STARTUP_ANIMATION_TIME from layout
Marco Trevisan (Treviño) [Thu, 27 Nov 2025 10:27:35 +0000 (11:27 +0100)]
overviewControls: Only import STARTUP_ANIMATION_TIME from layout

It's the only value we use from that module, and this would ensure that
the value is actually imported and it's not potentially an undefined
value

Part-of: <https://gitlab.gnome.org/GNOME/gnome-shell/-/merge_requests/3982>